package com.xiguthings.waka.shiro.filter.impl;

import java.io.IOException;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;

import com.xiguthings.waka.shiro.filter.BaseCostermAuthenticationFilter;

public class CustermAuthenticationFilterImpl extends BaseCostermAuthenticationFilter {
//	@Resource
//	private ISysUserService sysUserService;
//	@Resource
//	private IFinderService finderService;
//	@Resource
//	private IOwnerService ownerService;

	@Override
	public boolean isAccess(String token, HttpServletRequest request, HttpServletResponse response) {
//		String ip = LoginUtils.getIpAddress(request);
//		System.err.println("当前用户的ip:" + ip);
//		System.out.println("解密前token：" + token);
		// 移动端，这里验证移动端token
//		String arithmetic = "";
//		String type = "";
//		if (StringUtils.isNotBlank(token)) {
//			type = token.substring(0, 1);
//			if (type.equals("X")) {
//				arithmetic = RSAUtils.ARITHMETIC_RSA;
//			}
//			if (type.equals("p")) {
//				arithmetic = RSAUtils.ARITHMETIC_RSA;
//			}
//			if (type.equals("o") || type.equals("f")) {
//				arithmetic = RSAUtils.ARITHMETIC_RSA_NOPADDING;
//			}
//			try {
//				System.out.println("arithmetic是:"+arithmetic);
//				System.out.println("解密以前的token是："+token);
//				token = VerifyFilterUtils.getDecodeData(arithmetic, token.substring(1), request);
//				System.out.println("解密后的token："+token);
//			} catch (Exception e) {
//				if (e instanceof javax.crypto.BadPaddingException) {
//					System.err.println("公钥错误，请重新获取");
//				}
//				return false;
//			}
//			try {
//				if (type.equals("X")) {
//
////					System.out.println("目前代理请求，ip地址是" + ip);
////					System.out.println("代理请求的token：" + token);
//					/** 去掉IP校验
//					String proxyIp = WechatProxyData.PROXY_IP;
//					String[] proxyIps = proxyIp.split(";");
//					boolean ipEqual = false;
//					for(String ipStr : proxyIps){
//						if(ip.equals(ipStr)){
//							ipEqual = true;
//							break;
//						}
//					}
//                    return (WechatProxyData.PROXY_ID + WechatProxyData.PROXY_SECRET).equals(token)
//                            && ipEqual;
//					 **/
//					return (WechatProxyData.PROXY_ID + WechatProxyData.PROXY_SECRET).equals(token);
//				}
//				// JSONObject jsonObject = JSON.parseObject(token);
//
////				String cruUserId = VerifyFilterUtils.getCruUserId(arithmetic, token, request);
//				String cruUserId = JSON.parseObject(token).getString("userId");
//				Object obj = null;
//				if (StringUtils.isNotBlank(cruUserId)) {
//					if (type.equals("o")) {// owner用户
//						obj = ownerService.findByOwnId(cruUserId);
//					}
//					if (type.equals("f")) {// finder用户
//						obj = finderService.getFinderById(cruUserId);
//					}
//					if (type.equals("p")) {// pos机用户
//						obj = sysUserService.getUserById(cruUserId);
//					}
//					if (obj != null) {
//						request.setAttribute("curUser", obj);
//						return true;
//					}
//				}
//			} catch (Exception e) {
//				e.printStackTrace();
//				return false;
//			}
//		}
		return false;
	}

	@Override
	public boolean onAccessSuccess(HttpServletRequest request, HttpServletResponse response, String token) {
		return true;
	}

	@Override
	public boolean onAccessFail(HttpServletRequest request, HttpServletResponse response, String token) {
//		System.out.println("验证token失败！token：" + token);
//		try {
//			if (StringUtils.isNotBlank(token)) {
//				response.sendRedirect(request.getContextPath() + "/s/not/login?token=" + token);
//			} else {
//				response.sendRedirect(request.getContextPath() + "/s/not/login");
//			}
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
//		return false;
		return false;
	}

}
